DAY23:Build a pile of Cubes


Posted by birdbirdmurmur on 2023-08-05

題目連結

https://www.codewars.com/kata/5592e3bd57b64d00f3000047

解法

function findNb(m) {
    let volume = 0
    let n = 1

    while (volume < m){
      volume += Math.pow(n, 3)
      if (m === volume){
        return n
      }
      n++
    }
    return (-1)
}

筆記

我無法直接知道n的值
只能逐步地從1開始累加
然後檢查是否滿足總體積m的條件

原本打算使用for迴圈
但for似乎更適合有明確的範圍
所以後來改用while

還有另外一種解法
一樣使用while迴圈
不多設一個參數直接用m開始減去n+1的三次方
也可以寫成m -= ++n**3
後面使用判斷運算子
m<0, return-1 m=0 return n
簡寫成return m ? -1 : n

完整寫法:

function findNb(m) {
  let n = 0
  while (m > 0){
      m -= ++n**3
  }
  return m ? -1 : n
}

#javascript #Codewars #while







Related Posts

ASP.NET Core Web API 入門教學 - 基本上傳檔案

ASP.NET Core Web API 入門教學 - 基本上傳檔案

VSCode 終端機無法執行指令碼

VSCode 終端機無法執行指令碼

[論文筆記] OSCAR

[論文筆記] OSCAR


Comments